#pragma once

#include <GLNew\glew.h>
#include <list>
#include <stdio.h>
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <stdlib.h>
#include <string.h>
#include "ShaderLoader.hpp"

class Technique
{
public:
	public:

    Technique();
    ~Technique();

    virtual bool Init();

    void Enable();

protected:

    bool AddShader(GLenum ShaderType, const char* file_path);

    bool Finalize();

    GLuint GetUniformLocation(const char* pUniformName);

private:

    GLuint m_shaderProg;

    typedef std::list<GLuint> ShaderObjList;
    ShaderObjList m_shaderObjList;
};

